<?php
/**
 * @name Classe UsuarioRN
 *
 * @author  Pedro Schneider (correaschneider@gmail.com)
 *
 *
 */
class UsuarioRN 
{

	/**
	 * Declara a AD Referente
	 *
	 * @var UsuarioAD
	 */
	private $UsuarioAD;

	function __construct()
	{
		$this->UsuarioAD = new UsuarioAD();
	}

	/**
	 * @method Pesquisar
	 *
	 * @param object $Usuario
	 * @param string $ordenacao
	 * @param integer $limite
	 * @param integer $pagina
	 * @param string $complemento
	 *
	 * @return  array
	 */
	public function Pesquisar($Usuario = NULL, $ordenacao = NULL, $limite = NULL, $pagina = 1,$complemento = null)
	{
		$Idioma = RetornarIdioma();

		$Usuario->Ativo													 = ATIVO;

		$colecaoUsuario = $this->UsuarioAD->Pesquisar($Usuario, $ordenacao, $limite, $pagina, $complemento);

		return $colecaoUsuario;
	}

	/**
	 * @method Obter
	 *
	 * @param object $Usuario
	 * @param boolean $tipoPesquisa
	 * @param string $ordenacao
	 * @param string $complemento
	 *
	 * @return  object
	 */
	public function Obter($Usuario, $ordenacao = NULL, $complemento = NULL)
	{
		$Idioma = RetornarIdioma();

		$Usuario->Ativo													 = ATIVO;

		$retornoUsuario = $this->UsuarioAD->Obter($Usuario, $ordenacao, $complemento);

		/**
		 * usuarioarea
		 */
		if($Usuario->Colecaousuarioarea->Pesquisar === TRUE)
		{
			$usuarioareaRN													 = new usuarioareaRN();
			$usuarioarea													 = new stdClass();
			$usuarioarea->UsuarioID											 = $retornoUsuario->UsuarioID;
			$retornoUsuario->Colecaousuarioarea								 = $usuarioareaRN->Pesquisar($usuarioarea);
		}


		return $retornoUsuario;
	}

	/**
	 * @method Existir
	 *
	 * @param object $Usuario
	 * @param boolean $ordenacao
	 * @param boolean $complemento
	 *
	 * @return  boolean
	 */
	public function Existir($Usuario, $ordenacao = NULL, $complemento = NULL)
	{
		$Idioma = RetornarIdioma();

		$Usuario->Ativo													 = ATIVO;

		$retorno = $this->UsuarioAD->Existir($Usuario, $ordenacao, $complemento);

		return $retorno;
	}

	/**
	 * @method Excluir
	 *
	 * @param object $Usuario
	 *
	 * @return  boolean
	 */
	public function Excluir($Usuario)
	{
		/**
		 * usuarioarea
		 */
		$usuarioareaRN = new usuarioareaRN();
		$usuarioarea->UsuarioID = $Usuario->UsuarioID;

		$usuarioareaRN->Excluir($usuarioarea);

		$retorno = $this->UsuarioAD->Excluir($Usuario);

		return $retorno;
	}

	/**
	 * @method ContarRegistros
	 *
	 * @param object $Usuario
	 * @param string $ordenacao
	 * @param object $complemento
	 *
	 * @return  integer
	 */
	public function ContarRegistros($Usuario, $ordenacao = NULL, $complemento = NULL)
	{
		$Idioma = RetornarIdioma();

		$Usuario->Ativo													 = ATIVO;

		$retorno = $this->UsuarioAD->ContarRegistros($Usuario, $ordenacao, $complemento);

		return $retorno;
	}

	/**
	 * @method Salvar
	 *
	 * @param object $Usuario
	 *
	 * @return  object
	 */
	public function Salvar($Usuario)
	{
		$retornoUsuario = $this->UsuarioAD->Salvar($Usuario);

		/**
		 * usuarioarea
		 */
		if(count($Usuario->Colecaousuarioarea) > 0)
		{
			$usuarioareaRN = new usuarioareaRN();
			foreach ($Usuario->Colecaousuarioarea as $usuarioarea)
			{
				$usuarioarea = new stdClass();
				$usuarioarea->UsuarioID = $retornoUsuario->UsuarioID;
				$usuarioarea = $usuarioareaRN->Salvar($usuarioarea);

				$retornoUsuario->Colecaousuarioarea[] = $usuarioarea;
			}
		}

		return $retornoUsuario;
	}
}
?>